/**
 * 创建时间： 2017年5月10日
 *
 * @Copyright 武汉雷软科技有限公司
 */
package com.lrkj.framework.util.hex;

import com.lrkj.framework.util.socket.DatagramSocketUtil;

/**
 * <pre>
 * 创建人： 郭亮
 * 类描述：
 * 版本号：0.0.1
 * 修改人：
 * 修改时间：
 * 修改内容：
 * </pre>
 */
public class MacUtil {
    /**
     * 把mac 地址转成 二进制
     *
     * @param macStr mac地址
     * @return 数据
     */
    public static byte[] getMacBytes(String macStr) {
        byte[] bytes = new byte[6];
        String[] hex = macStr.split("(\\:|\\-)");
        if (hex.length != 6) {
            return null;
        }
        try {
            for (int i = 0; i < 6; i++) {
                bytes[i] = (byte) Integer.parseInt(hex[i], 16);
            }
        } catch (NumberFormatException e) {
            return null;
        }
        return bytes;
    }

    /**
     * 得到开机指令
     *
     * @param macStr mac地址
     * @return 开机指令
     */
    public static byte[] getDestBytes(String macStr) {
        byte[] destMac = getMacBytes(macStr);
        if (destMac == null) {
            return null;
        }
        // construct packet data
        byte[] magicBytes = new byte[102];
        // 将数据包的前6位放入0xFF即 "FF"的二进制
        for (int i = 0; i < 6; i++)
            magicBytes[i] = (byte) 0xFF;
        // 从第7个位置开始把mac地址放入16次
        for (int i = 0; i < 16; i++) {
            for (int j = 0; j < destMac.length; j++) {
                magicBytes[6 + destMac.length * i + j] = destMac[j];
            }
        }
        return magicBytes;
    }

    public static void main(String[] args) {
        DatagramSocketUtil.sendMac("00-30-18-53-4D-88", "169.254.93.255", 10000);
        //System.out.println(ByteUtil.bytesToHexString(getDestBytes("00-30-18-0A-D7-B0")));
    }
}
